/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package docview;
import java.awt.Dimension;
import java.awt.Frame;
import java.awt.Graphics;
import java.awt.GridLayout;
import java.awt.Image;
import java.awt.MediaTracker;
import java.awt.Toolkit;
import java.io.File;
import java.io.IOException;
import java.sql.SQLException;
import javax.imageio.ImageIO;
import javax.swing.JPanel;
import javax.swing.JTextArea;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
import tableprocessor.SessionFactoryUtil;
/**
 *
 * @author gleb
 */
public class SplashAndCheckerDocView  extends JPanel
{

    private JTextArea tarea = new JTextArea();
    private Image image = null;
    private int x,y,w,h;
    private boolean flag = false;
    private boolean rez = false;
    public SplashAndCheckerDocView()
    {
        Dimension dim = Toolkit.getDefaultToolkit().getScreenSize();
        image = Toolkit.getDefaultToolkit().getImage("./resources/splash.png");
        MediaTracker tracker = new MediaTracker(this);
        try {tracker.waitForID(0);}catch (InterruptedException e){e.printStackTrace();}
        try
        {
            image = ImageIO.read(new File("./resources/splash.png"));
        }
        catch (IOException e)
        {
            e.printStackTrace();
        }
        //this.setUndecorated(true);
         w = (int) (dim.getWidth() / 2);
         h = (int) (dim.getHeight() / 2);
         x = (int) (dim.getWidth()/2 - w/2);
         y = (int) (dim.getHeight()/2 - h/2);
        //this.setLayout(new GridLayout(1,1));
        this.setBounds(x, y, w, h);
        tracker.addImage(image, 0, w, h);
        //tarea.setEditable(false);
        //tarea.setBackground(this.getBackground());
        //this.setVisible(true);
        this.repaint();
        //add(tarea);


    }
    public boolean getRez(){return rez;}
    public void paintComponent(Graphics g)
    {
        int tx = 10;
        int ty = h-(int)h/4;
        super.paintComponents(g);
        if (image==null) 
        {
            return;
        }
        g.drawImage(image,0, 0, w, h, null);

        if (flag)
        {
            g.drawString("Инициализация...", tx, ty);
            g.drawString("Чтение файла конфигурации Hibernate...", tx, ty+10);
                    Configuration conf = new Configuration();
        try
        {
            conf.configure(new File("config/hibernate.cfg.xml"));
        }
        catch (Exception e)
        {
            rez = false;
        }
        g.drawString("Проверка соединения с сервером...",tx,ty+10);
        try
        {
            conf.buildSessionFactory().openSession().connection().isValid(0);
            g.drawString("Запуск приложения...",tx,ty+10);
            this.setVisible(false);
        }
        catch(Exception e)
        {
            e.printStackTrace();
            rez = false;
        }
            flag = true;
        }
    }
//    private boolean start(Graphics g)
//    {
//         boolean rez = true;
//         return rez;
//    }
//    public  boolean start()
//    {
//        boolean rez = true;
//        tarea.append("Инициализация...\n");
//        tarea.append("Чтение файла конфигурации Hibernate...");
//        Configuration conf = new Configuration();
//        try
//        {
//            conf.configure(new File("config/hibernate.cfg.xml"));
//            tarea.append("OK\n");
//        }
//        catch (Exception e)
//        {
//            tarea.append("FAIL\n");
//            rez = false;
//        }
//        tarea.append("Проверка соединения с сервером...");
//        try
//        {
//            conf.buildSessionFactory().openSession().connection().isValid(0);
//            tarea.append("OK\n");
//            tarea.append("Запуск приложения...\n");
//            this.setVisible(false);
//        }
//        catch(Exception e)
//        {
//            e.printStackTrace();
//            tarea.append("FAIL\n");
//            rez = false;
//        }
//        return rez;
//    }
}
